package com.banyou.banyou;

import android.app.Activity;
import android.app.Application;
import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.MediaStore;
import android.provider.Settings;
import android.support.v4.content.FileProvider;
import android.util.Log;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.Request;
import com.bumptech.glide.request.target.ImageViewTarget;
import com.socks.library.KLog;

import java.io.File;

import cn.finalteam.galleryfinal.CoreConfig;
import cn.finalteam.galleryfinal.FunctionConfig;
import cn.finalteam.galleryfinal.GalleryFinal;
import cn.finalteam.galleryfinal.ImageLoader;
import cn.finalteam.galleryfinal.ThemeConfig;
import cn.finalteam.galleryfinal.widget.GFImageView;


/**
 * Created by LX on 2017/1/10.
 * <p>
 * ----------BigGod be here!----------/
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃神兽保佑
 * 　　　　┃　　　┃代码无BUG！
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━神兽出没━━━━━━
 * 项目名称:PinWheelMedical
 * 包名:com.yyxk.pinwheelmedical
 * 类描述:
 * 创建人:LX
 * 创建时间:2017/1/10
 * 修改人:LX
 * 修改时间:
 * 修改备注
 */
public class MainApplication extends Application {
    private static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
        threadSDKInit();//第三方Sdk初始化
        testAlias();//检查别名
        setWifiDormancy(this);//设置Setting中WiFi休眠自动断开，改为始终连接
        setGallery();//设置图片选择器
        KLog.init(true, "taggg");//初始化Klog
    }

    /**
     * 设置图片选择器
     */
    private void setGallery() {
        //设置主题
//ThemeConfig.CYAN
        ThemeConfig theme = ThemeConfig.CYAN;
//        .build();
//配置功能
        FunctionConfig functionConfig = new FunctionConfig.Builder()
                .setEnableCamera(true)
                .setEnableEdit(true)
                .setEnableCrop(true)
                .setEnableRotate(true)
                .setCropSquare(true)
                .setEnablePreview(true)
                 .build();

        CoreConfig coreConfig;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            ContentValues contentValues = new ContentValues(1);
            File file=new File(Environment.DIRECTORY_PICTURES);
//            contentValues.put(MediaStore.Images.Media.DATA, file.getAbsolutePath());
//            Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);
            ImageLoader imageloader = new GlideImageLoader();
            coreConfig = new CoreConfig.Builder(this, imageloader, theme)
//                .setDebug(BuildConfig.DEBUG)
                    .setFunctionConfig(functionConfig)
                    .setTakePhotoFolder(file)
                    .build();
        }else {
            ImageLoader imageloader = new GlideImageLoader();
            coreConfig = new CoreConfig.Builder(this, imageloader, theme)
//                .setDebug(BuildConfig.DEBUG)
                    .setFunctionConfig(functionConfig)
                    .build();
        }
        GalleryFinal.init(coreConfig);
    }

    /**
     * 检查别名
     */
    private void testAlias() {

    }

    /**
     * 第三方sdk初始化
     */
    private void threadSDKInit() {
    }

    /**
     * 获取Context
     *
     * @return
     */
    public static Context getContext() {
        return mContext;
    }

    /**
     * 设置Setting中WiFi休眠自动断开，改为始终连接
     *
     * @param context
     */
    public void setWifiDormancy(Context context) {
        int value = Settings.System.getInt(context.getContentResolver(), Settings.Global.WIFI_SLEEP_POLICY,
                Settings.Global.WIFI_SLEEP_POLICY_DEFAULT);
        Log.d("tagggg", "setWifiDormancy() returned: " + value);
        if (Settings.Global.WIFI_SLEEP_POLICY_NEVER != value) {
            Settings.System.putInt(context.getContentResolver(), Settings.Global.WIFI_SLEEP_POLICY,
                    Settings.Global.WIFI_SLEEP_POLICY_NEVER);
        }
    }
    class GlideImageLoader implements cn.finalteam.galleryfinal.ImageLoader {

        @Override
        public void displayImage(Activity activity, String path, final GFImageView imageView, Drawable defaultDrawable, int width, int height) {

            Glide.with(activity)
                    .load("file://" + path)
                    .placeholder(defaultDrawable)
                    .error(defaultDrawable)
                    .override(width, height)
                    .diskCacheStrategy(DiskCacheStrategy.NONE) //不缓存到SD卡
                    .skipMemoryCache(true)
                    //.centerCrop()
                    .into(new ImageViewTarget<GlideDrawable>(imageView) {
                        @Override
                        protected void setResource(GlideDrawable resource) {
                            imageView.setImageDrawable(resource);
                        }

                        @Override
                        public void setRequest(Request request) {
                            imageView.setTag(R.id.adapter_item_tag_key,request);
                        }

                        @Override
                        public Request getRequest() {
                            return (Request) imageView.getTag(R.id.adapter_item_tag_key);
                        }
                    });
        }

        @Override
        public void clearMemoryCache() {
        }
    }
}
